#include<string>

#ifndef _H_HASHEDSTRING
#define _H_HASHEDSTRING
class HashedString;
typedef HashedString EventType;

class HashedString
{
public:
	static std::string WildCardEventType;

	explicit HashedString(char const * const pIdentStr);

	inline unsigned long getIdent() const { return reinterpret_cast<unsigned long>(mpID);  }
	inline char const * const getStr() const { return mpIDStr; }

	bool operator< (EventType const & o) const;
	bool operator==(EventType const & o) const;

	static void * hash_name(char const * pIdentStr);

private:
	void* mpID;
	char const* mpIDStr;
};
#endif